Non-volatile memory systems, such as flash memory, have been widely adopted for use in consumer products. Flash memory may be found in different forms, for example in the form of a portable memory card that can be carried between host devices or as a solid state disk (SSD) embedded in a host device.
In recent years, the physical block size in NAND flash memory has been growing exponentially: from about 128K in 2006 to over 4 MB in 2011. As block sizes increase, usage patterns that used to fill an entire 128K block are now only writing a partial 4 MB block. For example, a random write may be considered a write operation that results in writing data that takes up less than an entire block of memory. A sequential write may be considered a write operation that fills a block entirely. Thus, while a 128K write to a flash memory with a 128K block size may have been considered a sequential write operation, that same 128K write pattern is essentially a random write in a flash memory having a 4 MB block size. This results in an increased write amplification factor, where the write amplification factor is defined as the number of bytes that are written to NAND flash divided by the number of bytes actually written by the host. In multi-bank memory systems, bank interleaving can make this problem worse because the effective system “mega-block” size is increased by the number of banks in the system.
Previous NAND flash management systems have been at extremes of the NAND geometry spectrum. At one end is the physical page based architecture which typically manages a 4-16 KB page. At the other end of the spectrum is a block based architecture which often manages blocks or metablocks on the order of 1 MB-32 MB in size. Both page and block based memory management systems typically use bank interleaving at the physical page or die page level (generally 4K-32K). Bank interleaving is typically done because it can give good sequential and random performance and requires a minimum amount of buffer RAM. However, the benefits obtained in bank interleaving can be offset by an increase in the system write amplification factor by a factor equal to the number of banks in the system.